package DuoTai3;

//import DuoTai2.IUSB;// 导到同一个包中类平行的，
// 类与类中同包可访问同包可直接使用类变量了
//类类型创好的类变量平行是可用的

public class DuoTai3 {
}
class Test {
    static int a;
}
class Test2 {
    public void Test(Test test) {
        Test.a = 10;
        Test5.a = 10;

        /*System.out.println(DuoTai3.IUSB.a);//但接口变量虽平行出来但是不让直接去用的它里面静态变量的
        DuoTai3.IUSB.test();*/
        //接口变量的那层静态方法、静态变量都不让直接用的


    }
}
class Computer {
    public void powerOn() {
        System.out.println("打开笔记本电脑");
    }
    public void powerOff() {
        System.out.println("关闭笔记本电脑");
    }
    public void useDevice(IUSB usb) {//接口变量形参做父类的，类变量，传子类父类接向上转型
        usb.openDevice();//调用父类里被重写的方法
        if(usb instanceof KeyBoard) {//强转前需要判断该隐藏父类对应的子类
            KeyBoard keyBoard2 = (KeyBoard)usb;//强转回对应的子类，因为要用此父类对应子类那边的方法
            keyBoard2.inPut();//似复刻变量用上类变量的非静态方法
            keyBoard2.test();//似复刻变量用上类变量那边的静态方法
            KeyBoard.test();//类变量那边的静态方法用
        }else if (usb instanceof Mouse) {
            Mouse mouse = (Mouse)usb;
            mouse.click();
        }
        usb.closeDevice();
    }

    public static void main(String[] args) {//一个类中一个的main方法
        Computer computer = new Computer();//在同一个类中肯定可以用它这个类变量
        computer.powerOn();//用到类变量里面的非静态方法
        computer.useDevice(new Mouse());//用在同一个包中平行可用的类创似复刻变量，
        // 它是子类的似复刻变量，传到父类似复刻变量形参向上转型对应重写
        computer.useDevice(new KeyBoard());
        computer.powerOff();
    }
}




